perm filename MAC.FOT[TEX,DEK] blob
sn#853185 filedate 1988-02-15 generic text, type T, neo UTF8
dispfun(prime);
2
(E17) PRIME(N, M) := IF P > N THEN TRUE
M
ELSE (IF REMAINDER(N, P ) = 0 THEN FALSE ELSE PRIME(N, M + 1))
M
(D17) DONE
(C18)
for n thru k do print(n,p[n]);
1 2
2 3
3 5
4 7
5 11
6 13
7 17
(D18) DONE
(C19)
for n:19 step 2 thru 1000 do if prime(n,1) then print(k:k+1,p[k]:n);
8 19
9 23
10 29
11 31
12 37
13 41
14 43
15 47
16 53
17 59
18 61
19 67
20 71
21 73
22 79
23 83
24 89
25 97
26 101
27 103
28 107
29 109
30 113
31 127
32 131
33 137
34 139
35 149
36 151
37 157
38 163
39 167
40 173
41 179
42 181
43 191
44 193
45 197
46 199
47 211
48 223
49 227
50 229
51 233
52 239
53 241
54 251
55 257
56 263
57 269
58 271
59 277
60 281
61 283
62 293
63 307
64 311
65 313
66 317
67 331
68 337
69 347
70 349
71 353
72 359
73 367
74 373
75 379
76 383
77 389
78 397
79 401
80 409
81 419
82 421
83 431
84 433
85 439
86 443
87 449
88 457
89 461
90 463
91 467
92 479
93 487
94 491
95 499
96 503
97 509
98 521
99 523
100 541
101 547
102 557
103 563
104 569
105 571
106 577
107 587
108 593
109 599
110 601
111 607
112 613
113 617
114 619
115 631
116 641
117 643
118 647
119 653
120 659
121 661
122 673
123 677
124 683
125 691
126 701
127 709
128 719
129 727
130 733
131 739
132 743
133 751
134 757
135 761
136 769
137 773
138 787
139 797
140 809
141 811
142 821
143 823
144 827
145 829
146 839
147 853
148 857
149 859
150 863
151 877
152 881
153 883
154 887
155 907
156 911
157 919
158 929
159 937
160 941
161 947
162 953
163 967
164 971
165 977
166 983
167 991
168 997
(D19) DONE
(C20)
dsum(n):=if n<10 then n else remainder(n,10)+dsum(quotient(n,10));
(D20) DSUM(N) := IF N < 10 THEN N ELSE REMAINDER(N, 10) + DSUM(QUOTIENT(N, 10))
(C21)
dsum(111);
(D21) 3
(C22)
for n thru 168 do d[n]:dsum(p[n]);
(D22) DONE
(C23)
d[168];
(D23) 25
(C24)
ssum(n,m):=if p[m]↑2>n then dsum(n) else if remainder(p[m],n)=0 then d[m]+ssum(n
/p[m],m) else ssum(n,m+1);
2
(D24) SSUM(N, M) := IF P > N THEN DSUM(N)
M
N
ELSE (IF REMAINDER(P , N) = 0 THEN D + SSUM(--, M) ELSE SSUM(N, M + 1))
M M P
M
(C25)
ssum(8);
Too few arguments supplied to SSUM(N, M):
[8]
(C26)
ssum(8,1);
(D26) 8
(C27)
ssum(8,2);
(D27) 8
(C28)
ssum(9,1);
(D28) 9
(C29)
d[1];
(D29) 2
(C30)
dispfun(ssum);
2
(E30) SSUM(N, M) := IF P > N THEN DSUM(N)
M
N
ELSE (IF REMAINDER(P , N) = 0 THEN D + SSUM(--, M) ELSE SSUM(N, M + 1))
M M P
M
(D30) DONE
(C31)
ss(n,m):=(print(n,m),if p[m]↑2>n then dsum(n) else if remainder(p[m],n)=0 then d
[m]+ss(n/p[m],m) else ssum(n,m+1);
Missing ")"
) ELSE SSUM ( N , M + 1 ) **$**
Please rephrase or edit.
(C31)
ss(n,m):=(print(n,m),if p[m]↑2>n then dsum(n) else if remainder(p[m],n)=0 then d
[m]+ss(n/p[m],m) else ssum(n,m+1));
2
(D31) SS(N, M) := (PRINT(N, M), IF P > N THEN DSUM(N)
M
N
ELSE (IF REMAINDER(P , N) = 0 THEN D + SS(--, M) ELSE SSUM(N, M + 1)))
M M P
M
(C32)
ss(8,1);
8 1
(D32) 8
(C33)
p[1];
(D33) 2
(C34)
ssum(n,m):=if p[m]↑2>n then dsum(n) else if remainder(n,p[m])=0 then d[m]+ssum(n
/p[m],m) else ssum(n,m+1);
2
(D34) SSUM(N, M) := IF P > N THEN DSUM(N)
M
N
ELSE (IF REMAINDER(N, P ) = 0 THEN D + SSUM(--, M) ELSE SSUM(N, M + 1))
M M P
M
(C35)
ssum(8,1);
(D35) 6
(C36)
ssum(9,1);
(D36) 6
(C37)
smith(n):=if not prime(n,1) then (ssum(n,1)=dsum(n));
(D37) SMITH(N) := IF NOT PRIME(N, 1) THEN SSUM(N, 1) = DSUM(N)
(C38)
smith(22);
(D38) 4 = 4
(C39)
smith(n):=if prime(n,1) then false else if ssum(n,1)=dsum(n) then true else fals
e;
(D39) SMITH(N) := IF PRIME(N, 1) THEN FALSE
ELSE (IF SSUM(N, 1) = DSUM(N) THEN TRUE ELSE FALSE)
(C40)
for n thru 25 do print(n,smith(n));
1 FALSE
2 FALSE
3 FALSE
4 TRUE
5 FALSE
6 FALSE
7 FALSE
8 FALSE
9 FALSE
10 FALSE
11 FALSE
12 FALSE
13 FALSE
14 FALSE
15 FALSE
16 FALSE
17 FALSE
18 FALSE
19 FALSE
20 FALSE
21 FALSE
22 TRUE
23 FALSE
24 FALSE
25 FALSE
(D40) DONE
(C41)
for n thru 1000 do(if remainder(n,25)=0 then print(n), sm[n]:smith(n));
25
50
75
100
125
150
175
200
225
250
275
300
325
350
375
400
425
450
475
500
525
550
575
600
625
650
675
700
725
750
775
800
825
850
875
900
925
950
975
1000
(D41) DONE
(C42)
k:0;
(D42) 0
(C43)
for n thru 1000 do if sm[n] then print(k:k+1,s[k]:n);
1 4
2 22
3 27
4 58
5 85
6 94
7 121
8 166
9 202
10 265
11 274
12 319
13 346
14 355
15 378
16 382
17 391
18 438
19 454
20 483
21 517
22 526
23 535
24 562
25 576
26 588
27 627
28 634
29 636
30 645
31 648
32 654
33 663
34 666
35 690
36 706
37 728
38 729
39 762
40 778
41 825
42 852
43 861
44 895
45 913
46 915
47 922
48 958
49 985
(D43) DONE
(C44)
cycle(x):=block([k],k:1,while s[k]<x do(if sm[x+s[k]] then print(x,s[k]),k:k+1))
;
(D44) CYCLE(X) := BLOCK([K], K : 1, WHILE S <
K
X DO (IF SM THEN PRINT(X, S ), K : K + 1))
X + S K
K
(C45)
cycle(4);
(D45) DONE
(C46)
for n thru 49 do cycle(s[n]);
58 27
94 27
319 27
355 27
378 4
382 346
454 274
483 378
517 378
526 202
MACSYMA was unable to evaluate the predicate:
SM
1009
(C47)
logout();
@
@k
~Killed Job 9, User KNUTH, TTY 65, at 15-Feb-88 15:47:09
Used 0:04:28 in 0:32:57